"""
给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
"""


def largestNumber(nums):
    # 将 nums 转为字符串列表
    nums_str = list(map(str, nums))

    # 从大到小进行排序
    # key=lambda x: x * 9  这样做的目的是为了确保对于两个数字 x 和 y，拼接后的字符串 x+y 和 y+x 具有正确的顺序。通过将每个字符串重复九次，我们可以确保组合后的字符串在比较时按照数值大小进行排序。
    nums_str.sort(key=lambda x: x * 9, reverse=True)

    # 拼接排序后的字符串列表
    result = ''.join(nums_str)

    # 处理结果为 0 的情况
    if result.startswith('0'):
        return '0'
    return result